home *** CD-ROM | disk | FTP | other *** search
/ Aminet 40 / Aminet 40 (2000)(Schatztruhe)[!][Dec 2000].iso / Aminet / dev / gui / MultiDesktop.lha / MultiDesktop / multiwindows.h < prev    next >
Encoding:
C/C++ Source or Header  |  1997-03-27  |  30.7 KB  |  1,183 lines

  1. #ifndef MULTIDESKTOP_MULTIWINDOWS_H
  2. #define MULTIDESKTOP_MULTIWINDOWS_H
  3. #ifndef EXEC_TYPES_H
  4. #include <exec/types.h>
  5. #endif
  6. #ifndef MULTIDESKTOP_MULTIDESKTOP_H
  7. #include "desk/multidesktop.h"
  8. #endif
  9.  
  10. /* Std-Pointer und Wallpaper laden */
  11. #define LOAD_ALL
  12.  
  13. #define MAXSCREENS 25
  14. #define MAXWINDOWS 50
  15.  
  16. #define WindowID_InformationBox 49
  17.  
  18. /* === AppInfo()-Tags ================================================== */
  19. #define AI_Tags          TAG_USER+0x75400
  20. #define AI_MinStack      AI_Tags+1
  21. #define AI_MinOSVersion  AI_Tags+2
  22. #define AI_MinMemory     AI_Tags+3
  23. #define AI_MinChipMem    AI_Tags+4
  24. #define AI_Req020        AI_Tags+5
  25. #define AI_Req030        AI_Tags+6
  26. #define AI_ReqFPU        AI_Tags+7
  27. #define AI_ReqLocale     AI_Tags+8
  28. #define AI_NoMenuHelp    AI_Tags+9
  29. #define AI_NoGadgetHelp  AI_Tags+10
  30.  
  31. /* === CreateScreen-Flags ============================================== */
  32. #define CS_TEXTOVERSCAN  (1L<<0)
  33. #define CS_STDOVERSCAN   (1L<<1)
  34. #define CS_MAXOVERSCAN   (1L<<2)
  35. #define CS_VIDEOOVERSCAN (1L<<3)
  36. #define CS_NOAUTOSCROLL  (1L<<4)
  37. #define CS_NOSTDCOLORS   (1L<<5)
  38. #define CS_NOBACKDROP    (1L<<6)
  39. /* ---- INTERN --------------- */
  40. #define CS_SYSSCREEN     (1L<<15)
  41.  
  42. #define SCREENID_WORKBENCH 255
  43.  
  44. /* === CreateWindow-Flags ============================================== */
  45. #define CW_DRAG         (1L<<0)
  46. #define CW_DEPTH        (1L<<1)
  47. #define CW_CLOSE        (1L<<2)
  48. #define CW_SIZE         (1L<<3)
  49. #define CW_SCROLLV      (1L<<4)
  50. #define CW_SCROLLH      (1L<<5)
  51. #define CW_BORDERLESS   (1L<<6)
  52. #define CW_INACTIVATE   (1L<<7)
  53. #define CW_INITGFX      (1L<<8)
  54. /* ---- INTERN -------------- */
  55. #define CW_SYSWINDOW    (1L<<15)
  56.  
  57. struct CWSpecial
  58. {
  59.  BOOL  SpecialZoom;
  60.  UWORD ZoomMinW,ZoomMaxW,ZoomMinH,ZoomMaxH;
  61.  
  62.  BOOL  SpecialBitMap;
  63.  UWORD SuperWidth,SuperHeight;
  64. };
  65.  
  66. /* === AppObjects ====================================================== */
  67. #define IF_NONE       0
  68. #define IF_APPICON (1L<<1)
  69. #define IF_APPMENU (1L<<2)
  70.  
  71. /* === MultiMessage-System ============================================= */
  72. /* --- Window-Messages -------- */
  73. #define MULTI_GADGETUP          1
  74. #define MULTI_GADGETMOUSE       2
  75. #define MULTI_GADGETDOWN        3
  76. #define MULTI_CLOSEWINDOW       4
  77. #define MULTI_NEWSIZE           5
  78. #define MULTI_MENUPICK          6
  79. #define MULTI_RAWKEY            7
  80. #define MULTI_VANILLAKEY        8
  81. #define MULTI_MOUSEBUTTONS      9
  82. #define MULTI_MOUSEMOVE        10
  83. #define MULTI_REFRESHWINDOW    11
  84. #define MULTI_INTUITICKS       12
  85. #define MULTI_ACTIVEWINDOW     13
  86. #define MULTI_INACTIVEWINDOW   14
  87. #define MULTI_NEWPREFS         15
  88.  
  89. /* --- App-Messages ----------- */
  90. #define MULTI_APPICON         100
  91. #define MULTI_APPMENUITEM     101
  92. #define MULTI_APPWINDOW       102
  93.  
  94. /* --- Timer-Messages --------- */
  95. #define MULTI_TIMERALARM      200
  96.  
  97. /* --- Error-Messages --------- */
  98. #define MULTI_ERROR           300
  99. #define MULTI_GURU            301
  100.  /* ObjectID = Fehlercode */
  101.  
  102. /* --- Error-Messages --------- */
  103. #define MULTI_SYSTEM          400
  104.  
  105. #define MSYS_BREAK_CTRL_C     (1<<0)
  106. #define MSYS_BREAK_CTRL_D     (1<<1)
  107. #define MSYS_BREAK_CTRL_E     (1<<2)
  108. #define MSYS_BREAK_CTRL_F     (1<<3)
  109.  
  110. /* --- Systeminterne Messages - */
  111. #define MULTI_RAWINTUIMESSAGE 500
  112. #define MULTI_RAWAPPMESSAGE   501
  113.  
  114. struct MultiMessage
  115. {
  116.  UWORD                Class;           /* Message-Klasse               */
  117.  ULONG                WindowID;        /* ID des Fensters, falls vorh. */
  118.  ULONG                ObjectID;        /* ID des Objektes              */
  119.  ULONG                ObjectCode;      /* Code, z. B. Listview-Auswahl */
  120.  LONG                 ObjectData[4];   /* Andere Daten, z.B. Mauspos.  */
  121.  APTR                 ObjectAddress;   /* Adresse des Objektes         */
  122.  
  123.  struct IntuiMessage *IntuiMessage;
  124.  struct AppMessage   *AppMessage;
  125. };
  126.  
  127. /* === Gadget-Actions ================================================== */
  128. #define AGC_CYCLE                1
  129. #define AGC_MX                   2
  130. #define AGC_SLIDER               3
  131. #define AGC_SCROLLER             4
  132. #define AGC_PALETTE              5
  133. #define AGC_STATUS               6
  134. #define AGC_TX                   7
  135. #define AGC_TEXT                 8
  136. #define AGC_STRING               90
  137. #define AGC_HEX                  91
  138. #define AGC_FLOAT                92
  139. #define AGC_NM                   10
  140. #define AGC_NUMBER               11
  141. #define AGC_INTEGER              12
  142. #define AGC_LISTVIEW_SELECTION           130
  143. #define AGC_LISTVIEW_LABEL               131
  144. #define AGC_LISTVIEW_REMTEXT             132
  145. #define AGC_LISTVIEW_CHANGESELECTEDLABEL 133
  146. #define AGC_LISTVIEW_ADDHEAD             135
  147. #define AGC_LISTVIEW_ADDTAIL             136
  148. #define AGC_LISTVIEW_ADDSORTA            137
  149. #define AGC_LISTVIEW_ADDSORTD            138
  150. #define AGC_WHEEL                14
  151. #define AGC_SELECTBOX            15
  152.  
  153. struct Action
  154. {
  155.  struct Action *NextAction;
  156.  ULONG          TargetID;
  157.  UBYTE          SourceCode;
  158.  UBYTE          TargetCode;
  159.  
  160.  UWORD          Filter;
  161. };
  162.  
  163. /* === Gadget-Flags ==================================================== */
  164. /* Allgemeine Gadget-Flags: Textplatzierung, Disable */
  165.  
  166. #define CGA_DEFAULT      0
  167. #define CGA_LEFT      (1L<<0)
  168. #define CGA_RIGHT     (1L<<1)
  169. #define CGA_ABOVE     (1L<<2)
  170. #define CGA_BELOW     (1L<<3)
  171. #define CGA_IN        (1L<<4)
  172. #define CGA_HIGHLABEL (1L<<5)
  173. #define CGA_RECESSED  (1L<<6)
  174. #define CGA_DISABLE   (1L<<7)
  175.  
  176. /* Flags für Gadgets bestimmte Gadgets */
  177.  
  178. /* Listview */
  179. #define CLV_SHOWSELECTED (1L<<14)
  180. #define CLV_READONLY     (1L<<13)
  181. #define CLV_NONPROPFONT  (1L<<12)
  182.  
  183. #define SLE_ASCENDING  SORT_ASCENDING
  184. #define SLE_DESCENDING SORT_DESCENDING
  185.  
  186. #define ULP_HEAD  0
  187. #define ULP_TAIL  1
  188. #define ULP_SORTA 2
  189. #define ULP_SORTD 3
  190.  
  191. /* String */
  192. #define CST_LEFT    (1L<<15)
  193. #define CST_RIGHT   (1L<<14)
  194. #define CST_CENTER  (1L<<13)
  195. #define CST_PASSWORD (1L<<12)
  196.  
  197. struct StringHook
  198. {
  199.  UWORD    Flags;
  200.  ULONG  (*UserRoutine)();
  201.  APTR     UserData;
  202.  UBYTE   *CharTable;
  203. };
  204.  
  205. #define SHF_USERROUTINE (1L<<0)
  206. #define SHF_CHARTABLE   (1L<<1)
  207. #define SHF_TOUPPER     (1L<<2)
  208. #define SHF_TOLOWER     (1L<<3)
  209.  
  210. #define URR_RETURN   0 /* Zurück zu Intuition, Kommando nicht unterstützt */
  211. #define URR_OKAY     1 /* Zurück zu Intuition, Kommando erfolgreich       */
  212. #define URR_CONTINUE 2 /* CharTable, ToUpper/ToLower auch abarbeiten      */
  213.  
  214. /* Integer */
  215. #define CIN_LEFT     CST_LEFT
  216. #define CIN_RIGHT    CST_RIGHT
  217. #define CIN_CENTER   CST_CENTER
  218. #define CIN_PASSWORD CST_PASSWORD
  219.  
  220. /* Scroller */
  221. #define CSC_ARROWS (1L<<15)
  222.  
  223. /* Palette */
  224. #define CPL_IBOX  (1L<<15)
  225.  
  226. /* Text und TX */
  227. #define CTX_NOBORDER (1L<<15)
  228.  
  229. /* Number und NM */
  230. #define CNM_NOBORDER (1L<<15)
  231. #define CNM_NOLOCALE (1L<<13)
  232.  
  233. /* Text und Number */
  234. #define JSF_LEFT   0
  235. #define JSF_RIGHT  1
  236. #define JSF_CENTER 2
  237.  
  238. /* Status */
  239. #define CSG_ANIMPOINTER (1L<<15)
  240.  
  241. /* Hex */
  242. #define CHX_TOUPPER  (1L<<15)
  243. #define CHX_TOLOWER  (1L<<14)
  244.  
  245. /* ClickBox */
  246. #define CCB_NOBORDER (1L<<15)
  247. #define CCB_CIRCLE   (1L<<14)
  248. #define CCB_STAR     (1L<<13)
  249.  
  250. /* Wheel */
  251. #define CWH_NOBORDER (1L<<15)
  252.  
  253. /* SelectBox */
  254. #define CSB_NOBORDER (1L<<15)
  255.  
  256. /* Image */
  257. #define CIM_NOBORDER (1L<<15)
  258.  
  259. /* Icon */
  260. #define CIC_NOBORDER (1L<<15)
  261.  
  262. /* === StdPointer-Flags ================================================ */
  263. #define STDP_DEFAULT 0
  264. #define STDP_SLEEP   1
  265. #define STDP_WORK    2
  266. #define STDP_HELP    3
  267.  
  268. /* ===== Interne Verwaltungsstrukturen ================================= */
  269.  
  270. struct CommandTable
  271. {
  272.  UBYTE *CommandString;
  273.  UBYTE  CommandKey;
  274.  UBYTE  pad;
  275. };
  276.  
  277. struct MWMenu
  278. {
  279.  /* --- Menu-Struktur ------------ */
  280.  struct Menu    Menu;
  281.  
  282.  /* --- Verwaltung --------------- */
  283.  ULONG          MenuID;
  284.  ULONG          HelpID;
  285.  UBYTE         *TextID;
  286.  UWORD          Flags;
  287.  
  288.  /* --- Interne Zwischenspeicher - */
  289.  struct MWMenu *FindPrevMenu;
  290.  WORD           NextLeftEdge;
  291.  WORD           BoxWidth;
  292.  WORD           KeyLeft;
  293. };
  294.  
  295. #define CME_DEFAULT    0
  296. #define CME_DISABLE (1L<<0)
  297. /* --- INTERN ----------- */
  298. #define CME_SYSMENU (1L<<15)  /* nur für internen Gebrauch!!! */
  299.  
  300. /* InsertMenu() */
  301. #define INSERTID_HEAD 0
  302. #define INSERTID_TAIL 0xffffffff
  303.  
  304. /* FindMenuOrItem() */
  305. #define FINDTYPE_ITEM  1
  306. #define FINDTYPE_MENU  2
  307.  
  308. struct MWMenuItem
  309. {
  310.  /* --- Item-Struktur ------------- */
  311.  struct MenuItem     MenuItem;
  312.  struct IntuiText    ItemText[3];
  313.  struct TextAttr     TextAttr[2];
  314.  UBYTE              *String[2];
  315.  
  316.  /* --- Verwaltung ---------------- */
  317.  ULONG               ItemID;
  318.  ULONG               HelpID;
  319.  UWORD               Flags;
  320.  UBYTE               CommandKey;
  321.  UBYTE               CommandFlags;
  322.  struct ItemAction  *ItemAction;
  323.  
  324.  /* --- Interne Zwischenspeicher -- */
  325.  struct MWMenu      *FindMenu;
  326.  struct MWMenuItem  *FindPrevItem;
  327.  struct MWMenuItem  *FindMasterItem;
  328.  struct MultiRemember Remember;
  329.  WORD                 SubBoxWidth;
  330.  WORD                 SubKeyLeft;
  331.  WORD                 NextTopEdge;
  332. };
  333.  
  334. #define CMI_DEFAULT         0
  335. #define CMI_DISABLE   (1L<<0)
  336. #define CMI_T1BOLD    (1L<<1)
  337. #define CMI_T1ITALIC  (1L<<2)
  338. #define CMI_T2BOLD    (1L<<3)
  339. #define CMI_T2ITALIC  (1L<<4)
  340. #define CMI_CHECKIT   (1L<<5)
  341. /* --- INTERN ------------- */
  342. #define CMI_TOGGLE     (1L<<10)  /* werden bei AddToggleItem() und     */
  343. #define CMI_CHECKED    (1L<<11)  /* AddSubToggleItem() intern benötigt */
  344.  
  345. #define CMI_MASTERITEM (1L<<12)  /* nur für internen Gebrauch!!!       */
  346. #define CMI_BARITEM    (1L<<13)  /* nur für internen Gebrauch!!!       */
  347. #define CMI_SUBITEM    (1L<<14)  /* nur für internen Gebrauch!!!       */
  348. #define CMI_SYSITEM    (1L<<15)  /* nur für internen Gebrauch!!!       */
  349.  
  350. #define MICF_NONE         0
  351. #define MICF_INTUITION (1L<<0)
  352. #define MICF_ALT       (1L<<1)
  353. #define MICF_CTRL      (1L<<2)
  354. #define MICF_SHIFT     (1L<<3)
  355. #define MICF_AMIGAL    (1L<<4)
  356. #define MICF_AMIGAR    (1L<<5)
  357. #define MICF_FKEY      (1L<<6)
  358. #define MICF_HELP      (1L<<7)
  359.  
  360. /* ModifyItem()-ModifyFlags */
  361. #define MIF_SUBITEM (1L<<0)
  362. #define MIF_CHECKIT (1L<<1)
  363. #define MIF_SET     (1L<<2)
  364. #define MIF_UNSET   (1L<<3)
  365. #define MIF_ASK     (1L<<4)
  366.  
  367. /* Reservierte Item-IDs */
  368. #define STDITEM_ONLINEHELP 0xffff0001
  369. #define STDITEM_LOADGUIDE  0xffff0002
  370. #define STDITEM_ABOUTHELP  0xffff0003
  371. #define STDITEM_DEVELOPER  0xffff0004
  372.  
  373. struct ItemAction
  374. {
  375.  struct ItemAction *NextItemAction;
  376.  ULONG              TargetID;
  377.  UWORD              Flags;
  378. };
  379.  
  380. #define IAF_UNCHECK       0
  381. #define IAF_CHECK         1
  382. #define IAF_DISABLE       2
  383. #define IAF_ENABLE        3
  384.  
  385. struct AppObject
  386. {
  387.  struct MinNode Node;
  388.  ULONG          AppID;
  389.  
  390.  /* ---- Objektdaten ----- */
  391.  APTR           AppObject;
  392.  APTR           AppObjectData;
  393.  UBYTE          AppObjectType;
  394.  
  395.  /* ---- Besitzerdaten --- */
  396.  UBYTE          OwnerType;
  397.  APTR           Owner;
  398. };
  399.  
  400. #define AOT_ICON       1
  401. #define AOT_MENUITEM   2
  402. #define AOT_WINDOW     3
  403.  
  404. #define OT_USER        0
  405. #define OT_WINDOWENTRY 1
  406. #define OT_SCREENENTRY 2
  407.  
  408. /* --- MultiMessage->Code bei App-Messages */
  409. #define APPCODE_USER   0
  410. #define APPCODE_WINDOW 1
  411. #define APPCODE_SCREEN 2
  412.  
  413. #define MWGAD_GADTOOLS  0
  414. #define MWGAD_INTUITION 1
  415. #define MWGAD_SPECIAL   2
  416.  
  417. #define MWGADGET_TAGS 10
  418.  
  419. #define TX_LEFT   0
  420. #define TX_TOP    1
  421. #define TX_WIDTH  2
  422. #define TX_HEIGHT 3
  423.  
  424. struct MWGadget
  425. {
  426.  struct MinNode      MWGadgetNode;
  427.  
  428.  /* ---- Gadgetdaten ---------------------- */
  429.  UBYTE               Type;
  430.  UBYTE               CommandKey;
  431.  UWORD               Kind;
  432.  ULONG               GadgetID;
  433.  ULONG               HelpID;
  434.  UWORD               LeftEdge,
  435.                      TopEdge,
  436.                      Width,
  437.                      Height;
  438.  struct Action      *Action;
  439.  APTR                ExtData;
  440.  
  441.  /* ---- Verwaltung ----------------------- */
  442.  struct WindowEntry *WindowEntry;
  443.  struct TagItem      TagList[MWGADGET_TAGS];
  444.  
  445.  /* ---- INTERN ------------------------------------------------- */
  446.  UWORD               TextPos[4];   /* Textverwaltung              */
  447.  UWORD               GadgetCount;  /* Anzahl der Gadgets          */
  448.  struct NewGadget    NewGadget;    /* aktuelle Größe etc.         */
  449.  struct Gadget      *Gadget;       /* Zeiger auf erstes Gadget    */
  450.  struct Gadget      *Update;       /* GadTools-Verwaltung         */
  451.  struct MultiRemember Remember;    /* für MakeAction/UnMakeAction */
  452. };
  453.  
  454. struct ActionMessage
  455. {
  456.  struct ActionMessage *NextMessage;
  457.  ULONG                 Class;
  458.  ULONG                 ObjectID;
  459.  ULONG                 ObjectCode;
  460.  APTR                  ObjectAddress;
  461. };
  462.  
  463. #define GADGET_UNDERSCORE 0
  464. #define GADGET_DISABLE    1
  465.  
  466. #define TOGGLE_MAGIC  0x7466
  467. #define TOGGLE_STATUS 4
  468.  
  469. #define CYCLE_LABELS   2
  470. #define CYCLE_ACTIVE   3
  471.  
  472. struct CycleData
  473. {
  474.  UWORD  LabelCount;
  475.  UBYTE *Labels[12];
  476.  ULONG  Zero;
  477. };
  478.  
  479. #define MX_LABELS  2
  480. #define MX_ACTIVE  3
  481.  
  482. struct MXData
  483. {
  484.  UWORD  LabelCount;
  485.  UBYTE *Labels[12];
  486.  ULONG  Zero;
  487.  
  488.  /* --- INTERN --------------- */
  489.  UBYTE  CommandKey[12];
  490.  UWORD  X1,Y1,X2,Y2;
  491. };
  492.  
  493. #define LISTVIEW_LABELS       2
  494. #define LISTVIEW_TOP          3
  495. #define LISTVIEW_READONLY     4
  496. #define LISTVIEW_SELECTED     5
  497. #define LISTVIEW_RECESSED     6
  498. #define LISTVIEW_SHOWSELECTED 7
  499.  
  500. struct ListviewData
  501. {
  502.  struct List          List;
  503.  
  504.  /* --- INTERN --------------- */
  505.  struct MultiRemember Remember;
  506.  UWORD                X1,Y1,X2,Y2;
  507. };
  508.  
  509. struct ListviewNode
  510. {
  511.  struct Node  Node;
  512.  
  513.  /* --- INTERN --------------- */
  514.  UBYTE        Label[];
  515. };
  516.  
  517. #define STRING_MAXCHARS      2
  518. #define STRING_STRING        3
  519. #define STRING_JUSTIFICATION 4
  520.  
  521. struct StringData
  522. {
  523.  /* --- String-Hook ------- */
  524.  struct Hook *Hook;
  525.  UBYTE       *WorkBuffer;
  526.  UWORD        Flags;
  527.  
  528.  /* --- INTERN ------------ */
  529.  UBYTE       *Buffer;
  530.  UWORD        SpecialType;
  531.  APTR         Special;
  532. };
  533.  
  534. #define SST_STRING 0
  535. #define SST_HEX    1
  536. #define SST_FLOAT  2
  537. #define SST_USER   3
  538.  
  539. struct HexData
  540. {
  541.  ULONG Min;
  542.  ULONG Max;
  543. };
  544.  
  545. struct FloatData
  546. {
  547.  FLOAT Min;
  548.  FLOAT Max;
  549. };
  550.  
  551. #define INTEGER_MAXCHARS      2
  552. #define INTEGER_INTEGER       3
  553. #define INTEGER_JUSTIFICATION 4
  554.  
  555. struct IntegerData
  556. {
  557.  LONG  Min;
  558.  LONG  Max;
  559. };
  560.  
  561. #define SLIDER_MIN         2
  562. #define SLIDER_MAX         3
  563. #define SLIDER_LEVEL       4
  564. #define SLIDER_RELVERIFY   5
  565. #define SLIDER_IMMEDIATE   6
  566. #define SLIDER_FREEDOM     7
  567. #define SLIDER_FOLLOWMOUSE 8
  568.  
  569. #define SCROLLER_TOP       2
  570. #define SCROLLER_TOTAL     3
  571. #define SCROLLER_VISIBLE   4
  572. #define SCROLLER_ARROWS    5
  573. #define SCROLLER_RELVERIFY 6
  574. #define SCROLLER_IMMEDIATE 7
  575. #define SCROLLER_FREEDOM   8
  576.  
  577. #define PALETTE_COLOR    2
  578. #define PALETTE_OFFSET   3
  579. #define PALETTE_DEPTH    4
  580. #define PALETTE_IWIDTH   5
  581.  
  582. #define CHECKBOX_CHECKED 2
  583.  
  584. #define TEXT_TEXT     2
  585. #define TEXT_BORDER   3
  586. #define TEXT_RECESSED 4
  587.  
  588. #define NUMBER_NUMBER   2
  589. #define NUMBER_BORDER   3
  590. #define NUMBER_RECESSED 4
  591.  
  592. #define TOGGLE_KIND    0
  593. #define STEXT_KIND     1
  594. #define SNUMBER_KIND   2
  595. #define CLICKBOX_KIND  3
  596. #define STATUS_KIND    4
  597. #define WHEEL_KIND     5
  598. #define SELECTBOX_KIND 6
  599. #define ICON_KIND      7
  600. #define IMAGE_KIND     8
  601.  
  602. struct TextData
  603. {
  604.  UWORD Flags;
  605.  UWORD Justification;
  606. };
  607.  
  608. #define STEXT_TEXT 0
  609.  
  610. struct NumberData
  611. {
  612.  UWORD  Flags;
  613.  UWORD  Justification;
  614.  UBYTE *FormatString;
  615. };
  616.  
  617. #define SNUMBER_NUMBER 0
  618.  
  619. struct StatusData
  620. {
  621.  UWORD  Flags;
  622.  UBYTE *FormatString;
  623.  ULONG  Min;
  624.  ULONG  Max;
  625. };
  626.  
  627. #define STATUS_LEVEL    0
  628.  
  629. struct ClickBoxData
  630. {
  631.  UWORD         Flags;
  632.  
  633.  /* --- INTERN ---------- */
  634.  struct Gadget  Gadget;
  635. };
  636.  
  637. #define CLICKBOX_STATUS 0
  638.  
  639. struct SelectBoxData
  640. {
  641.  UWORD            Flags;
  642.  UBYTE            TitleCount;
  643.  UBYTE            Selected;
  644.  ULONG           *TitleArray;
  645.  
  646.  /* --- INTERN ---------- */
  647.  struct Gadget       Gadget;
  648.  struct ExtNewWindow NewWindow;
  649.  struct TagItem      TagList[4];
  650. };
  651.  
  652. struct WheelData
  653. {
  654.  UWORD          Flags;
  655.  ULONG          Min;
  656.  ULONG          Max;
  657.  ULONG          Current;
  658.  
  659.  /* --- INTERN ---------- */
  660.  struct Gadget  Gadget;
  661.  UWORD          OldX,
  662.                 OldY;
  663. };
  664.  
  665. struct IconData
  666. {
  667.  UWORD              Flags;
  668.  struct DiskObject *Icon;
  669.  
  670.  /* --- INTERN ---------- */
  671.  struct Gadget      Gadget;
  672. };
  673.  
  674. struct ImageData
  675. {
  676.  UWORD              Flags;
  677.  struct Image      *Image;
  678.  
  679.  /* --- INTERN ---------- */
  680.  struct Gadget     *Gadget;
  681. };
  682.  
  683. struct Frame
  684. {
  685.  struct MinNode Node;
  686.  
  687.  ULONG          ID;
  688.  UWORD          Type;
  689.  UWORD          LeftEdge,
  690.                 TopEdge,
  691.                 Width,
  692.                 Height;
  693.  
  694.  /* --- INTERN ---------- */
  695.  UWORD          x,y,w,h;
  696. };
  697.  
  698. #define FT_STANDARD 0
  699. #define FT_RECESSED 1
  700. #define FT_DOUBLE   2
  701.  
  702. struct WindowEntry
  703. {
  704.  struct Node           WindowNode;
  705.  UWORD                 WindowID;
  706.  UWORD                 WindowFlags;
  707.  
  708.  /* --- Strukturen ------------------- */
  709.  struct Window        *Window;
  710.  struct MsgPort       *UserPort;
  711.  struct Screen        *Screen;
  712.  struct ScreenEntry   *ScreenEntry;
  713.  struct RastPort      *RastPort;
  714.  struct ViewPort      *ViewPort;
  715.  struct BitMap        *BitMap;
  716.  struct TextFont      *TextFont;
  717.  struct Layer         *Layer;
  718.  struct Layer_Info    *LayerInfo;
  719.  struct ColorMap      *ColorMap;
  720.  struct DrawInfo      *DrawInfo;
  721.  struct Wallpaper     *Wallpaper;
  722.  struct Pointer       *Pointer;
  723.  APTR                  VisualInfo;
  724.  
  725.  /* --- Größe ------------------------ */
  726.  UWORD                 InnerLeftEdge,
  727.                        InnerTopEdge,
  728.                        InnerWidth,
  729.                        InnerHeight;
  730.  UWORD                 OWidth,OHeight,
  731.                        Width,Height;
  732.  FLOAT                 FactorX,FactorY;
  733.  FLOAT                 AspectX,AspectY;
  734.  
  735.  /* --- Zeichenfunktionen ------------ */
  736.  struct AreaInfo      *AreaInfo;
  737.  struct TmpRas        *TmpRas;
  738.  
  739.  /* --- Workbench App-Strukturen ----- */
  740.  BOOL                  Iconify;
  741.  struct AppObject     *AppIcon;
  742.  struct AppObject     *AppMenuItem;
  743.  struct AppObject     *AppWindow;
  744.  
  745.  /* --- Schalter, Menüs, Frames ------ */
  746.  struct List           GadgetList;
  747.  struct List           FrameList;
  748.  struct MWMenu        *FirstMenu;
  749.  
  750.  /* --- Erweiterungen ---------------- */
  751.  ULONG                 WEUserData[4];   /* zur freien Verfügung     */
  752.  ULONG                 WEExtData[4];    /* für MultiDesktop, INTERN */
  753.  
  754.  /* --- INTERN ---------------------------------------------------- */
  755.  /* die folgenden Einträge dienen zur internen Verwaltung und       */
  756.  /* sollten nach Möglichkeit nicht verwendet werden, auf keinen     */
  757.  /* Fall jedoch Manipuliert werden!!                                */
  758.  
  759.  /* --- Gadgets, ActionLists, Gadget-Hilfe ------------------------ */
  760.  struct MWGadget      *FMGadget;        /* für FollowMouse-Events   */
  761.  struct MWGadget      *LastGadget;      /* für MakeAction()         */
  762.  struct ActionMessage *ActionMessage;   /* für CallAction()         */
  763.  struct Window        *GHWindow;        /* zur Verwaltung der       */
  764.  UWORD                 GHMouseX,        /*  Gadget-Hilfe            */
  765.                        GHMouseY;
  766.  UWORD                 GHTime;
  767.  struct MWGadget      *GHGadget;
  768.  struct Screen        *MHScreen;        /* zur Verwaltung der       */
  769.  struct MWMenu        *MHMenu;          /*  Menü-Hilfe              */
  770.  struct MWMenuItem    *MHMenuItem;
  771.  struct MWMenuItem    *MHSubItem;
  772.  
  773.  /* --- Menüs ----------------------------------------------------- */
  774.  struct MWMenu        *LastMenu;        /* letztes Menü             */
  775.  struct MWMenuItem    *LastMenuItem;    /* letztes Menü-Item        */
  776.  struct MWMenuItem    *LastSubItem;     /* letztes Sub-Item         */
  777.  struct MWMenuItem    *HelpOnItem,      /* Zeiger auf Items für     */
  778.                       *DeveloperOnItem; /*  Globale Online-Hilfe    */
  779.  UBYTE                 MenuOn;          /* Menü eingeschaltet?      */
  780.  UBYTE                 MenuInUse;       /* Menü wird gerade gewählt */
  781.  
  782.  /* --- Wallpapers, Pointers, Verwaltung -------------------------- */
  783.  struct RPBackup      *RPBackup;        /* BackupRP()/RestoreRP()   */
  784.  struct Wallpaper     *SysWPAddress;    /* für Wallpaper()          */
  785.  struct Pointer       *SysPOAddress;    /* für Pointer()            */
  786.  struct Pointer       *ActivePointer;   /* aktueller Pointer        */
  787.  UWORD                 ActivePointerImage;  /* Pointer-Bildnummer   */
  788.  BOOL                  PubScreenLock;   /* zur PubScreen-Verwaltung */
  789.  
  790.  /* --- Zeichenfunktionen ----------------------------------------- */
  791.  UWORD                 TmpRasCount;     /* für Create/DeleteTmpRas  */
  792.  UBYTE                *AreaInfoTable;   /* Koordinatentabelle       */
  793.  UBYTE                 GfxFlags;        /* Korrekturflag            */
  794.  UBYTE                 GfxStyle;        /* Textstil                 */
  795.  UWORD                 TextSpacing;     /* Zeichenabstand           */
  796.  struct TextFont      *WindowFont;      /* Font-Cache-Verwaltung    */
  797.  
  798.  /* --- Öffnen und Ikonifizieren, Speicherverwaltung -------------- */
  799.  struct MultiRemember  Remember;        /* Speicherliste            */
  800.  struct ExtNewWindow   NewWindow;       /* Strukturen zur           */
  801.  struct TagItem        TagList[5];      /*  Ikonifizierung und      */
  802.  struct RastPort       IRastPort;       /*  Wiederherstellung       */
  803.  
  804.  /* --- INTERN ---------------------------------------------------- */
  805.  struct AreaInfo       AreaInfoBuffer;  /* Speicher für Grafik-     */
  806.  struct TmpRas         TmpRasBuffer;    /*  strukturen              */
  807.  struct BitMap         BitmapBuffer;
  808.  ULONG                 WESpecialData[2];  /* Interne Verwaltung     */
  809. };
  810.  
  811. struct RPBackup
  812. {
  813.  struct RPBackup *NextBackup;
  814.  
  815.  UBYTE            Pens[3];
  816.  UBYTE            DrawMode;
  817.  UWORD            X,Y;
  818.  struct TextFont *Font;
  819. };
  820.  
  821. struct HelpLine
  822. {
  823.  UBYTE  Flags;
  824.  UBYTE  Pen;
  825.  UWORD  Width;
  826.  UBYTE *String;
  827. };
  828.  
  829. struct HelpText
  830. {
  831.  UWORD           Lines;
  832.  UWORD           Height;
  833.  UWORD           Width;
  834.  struct HelpLine HelpLine[12];
  835.  
  836.  /* --- INTERN --------------- */
  837.  UBYTE           HelpString[];
  838. };
  839.  
  840. #define HLF_CENTER    (1L<<0)
  841. #define HLF_RIGHT     (1L<<1)
  842. #define HLF_BOLD      (1L<<2)
  843. #define HLF_UNDERLINE (1L<<3)
  844. #define HLF_ITALIC    (1L<<4)
  845.  
  846. #define ST_NORMAL        0
  847. #define ST_BOLD       (1L<<0)
  848. #define ST_ITALIC     (1L<<1)
  849. #define ST_UNDERLINED (1L<<2)
  850. #define ST_OUTLINE    (1L<<3)
  851. #define ST_SHADOW     (1L<<4)
  852. #define ST_WIDE       (1L<<5)
  853.  
  854. #define GFXF_OLDXY       0
  855. #define GFXF_NEWXY       1
  856.  
  857. struct ScreenEntry
  858. {
  859.  UWORD                 ScreenID;
  860.  UWORD                 ScreenFlags;
  861.  
  862.  /* --- Strukturen ------------- */
  863.  ULONG                 ModeID;
  864.  struct Screen        *Screen;
  865.  struct RastPort      *RastPort;
  866.  struct ViewPort      *ViewPort;
  867.  struct BitMap        *BitMap;
  868.  struct Layer_Info    *LayerInfo;
  869.  struct ColorMap      *ColorMap;
  870.  struct DisplayInfo   *DisplayInfo;
  871.  
  872.  /* --- Verwaltung ------------- */
  873.  struct List           WindowList;
  874.  struct Window        *BgWindow;
  875.  struct Wallpaper     *BgWallpaper;
  876.  
  877.  /* --- Ikonifizierung --------- */
  878.  BOOL                  Iconify;
  879.  struct AppObject     *AppIcon;
  880.  struct AppObject     *AppMenuItem;
  881.  
  882.  /* --- Erweiterungen ---------- */
  883.  ULONG                 SEUserData[4];   /* zur freien Verfügung     */
  884.  ULONG                 SEExtData[4];    /* für MultiDesktop, INTERN */
  885.  
  886.  /* --- INTERN ----------------- */
  887.  UWORD                *CTabBackup;        /* Iconify/Uniconify        */
  888.  struct DisplayInfo    DisplayInfoBuffer; /* Buffer für Strukturen    */
  889.  struct TagItem        TagList[15];
  890. };
  891.  
  892. struct VideoInfo
  893. {
  894.  struct Node           Node;
  895.  
  896.  /* --- Strukturen ------------- */
  897.  ULONG                 ModeID;
  898.  struct NameInfo      *NameInfo;
  899.  struct DisplayInfo   *DisplayInfo;
  900.  struct DimensionInfo *DimensionInfo;
  901.  struct MonitorInfo   *MonitorInfo;
  902.  
  903.  /* --- INTERN ----------------- */
  904.  struct NameInfo       NameInfoBuffer;
  905.  struct DisplayInfo    DisplayInfoBuffer;
  906.  struct DimensionInfo  DimensionInfoBuffer;
  907.  struct MonitorInfo    MonitorInfoBuffer;
  908. };
  909.  
  910. struct SignalList
  911. {
  912.  UWORD Count;
  913.  ULONG WaitMask;
  914.  BOOL  MenuInUse;
  915.  
  916.  UBYTE WindowID[MAXWINDOWS];
  917.  ULONG SignalMask[MAXWINDOWS];
  918.  
  919.  ULONG TimerSignalMask;
  920.  ULONG AppSignalMask;
  921.  ULONG GuideSignalMask;
  922.  ULONG BreakSignalMask;
  923. };
  924.  
  925. struct UserNode
  926. {
  927.  struct Node              Node;
  928.  ULONG                    Version;
  929.  struct MultiWindowsUser *Address;
  930. };
  931.  
  932. struct MultiWindowsUser
  933. {
  934.  /* --- Interne User-Verwaltung ------------ */
  935.  UWORD                    UserCount;
  936.  struct MultiRemember     Remember;
  937.  struct UserNode          UserNode;
  938.  struct MultiDesktopBase *MultiDesktopBase;
  939.  
  940.  /* --- Globale Applikationsdaten ---------- */
  941.  UBYTE                   *GuideName;
  942.  struct Catalog          *Catalog;
  943.  struct Locale           *Locale;
  944.  struct DiskObject       *Icon;
  945.  
  946.  struct TextAttr         *TextAttr;
  947.  struct TextAttr         *NonPropTextAttr;
  948.  struct TextAttr         *BoldTextAttr;
  949.  
  950.  struct TextFont         *TextFont;
  951.  struct TextFont         *NonPropTextFont;
  952.  
  953.  /* --- FontSensitive-System --------------- */
  954.  ULONG                    OldFontH,
  955.                           OldFontV;
  956.  ULONG                    NewFontH,
  957.                           NewFontV;
  958.  FLOAT                    FactorX,
  959.                           FactorY;
  960.  
  961.  /* --- DOS-Daten -------------------------- */
  962.  UBYTE                   *ProgramName;
  963.  UBYTE                   *ProgramDirName;
  964.  UBYTE                   *Arguments;
  965.  UBYTE                  **ToolTypes;
  966.  BOOL                     WorkbenchStartup;
  967.  BYTE                     TaskPriority;
  968.  BYTE                     OldTaskPriority;
  969.  struct MsgPort          *AppPort;
  970.  
  971.  /* --- Variablen zur Verwaltung ----------- */
  972.  UBYTE                    HelpOn;
  973.  UBYTE                    DeveloperOn;
  974.  UBYTE                    HasGadgetHelp;
  975.  UBYTE                    HasMenuHelp;
  976.  UBYTE                    SpaceSize;
  977.  UBYTE                    BarCharSize;
  978.  UWORD                    SubStringSize;
  979.  
  980.  /* --- Fenster- und Screenverwaltung ------ */
  981.  WORD                     ActiveWindowID;
  982.  struct WindowEntry      *ActiveWindow;
  983.  struct ScreenEntry      *ScreenList[MAXSCREENS+1];
  984.  struct WindowEntry      *WindowList[MAXWINDOWS+1];
  985.  
  986.  /* --- Caches, AmigaGuide ----------------- */
  987.  struct List              AppObjectList;
  988.  struct List              CachedFontsList;
  989.  struct NewAmigaGuide    *Guide;
  990.  ULONG                    GuideSignalMask;
  991.  UBYTE                    GuideReady;
  992.  UBYTE                    GuideCommand;
  993.  
  994.  /* --- Erweiterungen ---------------- */
  995.  ULONG                    MWUUserData[4];   /* zur freien Verfügung     */
  996.  ULONG                    MWUExtData[4];    /* für MultiDesktop, INTERN */
  997.  
  998.  /* --- Interne Speicherbereiche ----------- */
  999.  struct TextAttr          TABuffer[3];
  1000.  struct MultiMessage      MultiMessage;
  1001.  struct IntuiMessage      IntuiMessage;
  1002.  struct AppMessage        AppMessage;
  1003.  struct SignalList        SignalList;
  1004.  struct NewAmigaGuide     AmigaGuideBuffer;
  1005. };
  1006.  
  1007. struct CachedFont
  1008. {
  1009.  struct Node      Node;
  1010.  UWORD            Height;
  1011.  struct TextFont *TextFont;
  1012. };
  1013.  
  1014. struct Wallpaper
  1015. {
  1016.  struct Node   Node;
  1017.  UWORD         UserCount;
  1018.  
  1019.  UWORD         Width;
  1020.  UWORD         Height;
  1021.  struct BitMap BitMap;
  1022.  
  1023.  /* --- INTERN ------------ */
  1024.  UBYTE         Name[];
  1025. };
  1026.  
  1027. struct Pointer
  1028. {
  1029.  struct Node   Node;
  1030.  UWORD         UserCount;
  1031.  
  1032.  UWORD         Width;
  1033.  UWORD         Height;
  1034.  WORD          HotSpotX,
  1035.                HotSpotY;
  1036.  
  1037.  UWORD         PointerCount;
  1038.  UWORD         PointerSize;
  1039.  UBYTE        *PointerImage;
  1040.  
  1041.  UBYTE         HasColors;
  1042.  UBYTE         Colors[12];
  1043.  
  1044.  /* --- INTERN ------------ */
  1045.  UBYTE         Name[];
  1046. };
  1047.  
  1048. struct UserInfo
  1049. {
  1050.  UBYTE Name[40];
  1051.  UBYTE Address[2][24];
  1052.  UBYTE Country[24];
  1053.  UBYTE PhoneNumber[24];
  1054.  UBYTE FaxNumber[24];
  1055.  
  1056.  UBYTE BirthDay;
  1057.  UBYTE BirthMonth;
  1058.  UWORD BirthYear;
  1059.  
  1060.  UBYTE UserLevel;
  1061.  UBYTE UserType;
  1062. };
  1063.  
  1064. #define USERLEVEL_EXPERT   0
  1065. #define USERLEVEL_ADVANCED 1
  1066. #define USERLEVEL_BEGINNER 2
  1067.  
  1068. #define USERTYPE_MALE       0          /* Usertyp: männlich */
  1069. #define USERTYPE_FEMALE  (1L<<0)       /* weiblich          */
  1070.  
  1071. struct MultiWindowsBase
  1072. {
  1073.  /* --- Exec-Verwaltung -------------- */
  1074.  struct Library       Library;
  1075.  struct Library      *AslLibrary;
  1076.  struct Library      *AmigaGuideLibrary;
  1077.  
  1078.  /* --- Listen ----------------------- */
  1079.  UWORD                AppCount;
  1080.  UWORD                WallpaperCount;
  1081.  UWORD                PointerCount;
  1082.  UWORD                VideoInfoCount;
  1083.  struct List          AppList;
  1084.  struct List          WallpaperList;
  1085.  struct List          PointerList;
  1086.  struct List          VideoInfoList;
  1087.  
  1088.  /* --- Standard-Zeichensätze -------- */
  1089.  UBYTE               *TestString;
  1090.  UWORD                TestStringLength;
  1091.  
  1092.  struct TextAttr     *TopazAttr;
  1093.  struct TextFont     *TopazFont;
  1094.  struct TextAttr     *Password5Attr;
  1095.  struct TextFont     *Password5Font;
  1096.  struct TextAttr     *Password9Attr;
  1097.  struct TextFont     *Password9Font;
  1098.  
  1099.  struct TextAttr     *DefaultAttr;
  1100.  struct TextAttr     *DefaultNonPropAttr;
  1101.  struct TextFont     *DefaultFont;
  1102.  struct TextFont     *DefaultNonPropFont;
  1103.  
  1104.  /* --- Zeiger auf Strukturen -------- */
  1105.  struct UserInfo      *UserInfo;
  1106.  struct Preferences   *Preferences;
  1107.  struct Pointer       *SleepPointer;
  1108.  struct Pointer       *WorkPointer;
  1109.  struct Pointer       *HelpPointer;
  1110.  struct Wallpaper     *HelpWallpaper;
  1111.  struct CommandTable **CommandTable;
  1112.  UBYTE                *MenuSubString;
  1113.  
  1114.  /* --- Verzeichnis- und Dateinamen -- */
  1115.  UBYTE                *WallpaperDir;
  1116.  UBYTE                *PointerDir;
  1117.  UBYTE                *SleepPointerName;
  1118.  UBYTE                *WorkPointerName;
  1119.  UBYTE                *HelpPointerName;
  1120.  UBYTE                *HelpWallpaperName;
  1121.  
  1122.  /* --- String-Gadget-Hooks ---------- */
  1123.  struct Hook           FloatHook;
  1124.  struct Hook           HexHook;
  1125.  struct Hook           UserHook;
  1126.  
  1127.  /* --- Menü-Konstanten -------------- */
  1128.  UBYTE                 MenuLineSpacing;   /* Abstand zwischen Items          */
  1129.  UBYTE                 MenuCommSeqSpacing;/* Abstand Item-Text - Kommando    */
  1130.  UBYTE                 MenuItemMove;      /* Item-Verschiebung nach rechts   */
  1131.  UBYTE                 MenuBarChar;       /* Baritem-Zeichen                 */
  1132.  
  1133.  /* --- Online-Hilfe-Konstanten ------ */
  1134.  UBYTE                 HelpTicks;         /* Zeitverzögerung für Gadget- und */
  1135.  UBYTE                 HelpAvoidFlicker;  /*  Menü-Hilfe                     */
  1136.  UBYTE                 HelpActive;        /* Hilfe aktiv?                    */
  1137.  UBYTE                 HelpDeveloper;     /* Developer-Mode aktiv?           */
  1138.  WORD                  HelpCorrY;         /* Y-Korrektur für Menü-Hilfe      */
  1139.  
  1140.  /* --- INTERN ----------------------- */
  1141.  struct Preferences    PreferencesBuffer;
  1142.  struct UserInfo       UserInfoBuffer;
  1143. };
  1144.  
  1145. #define WALLPAPER_DIR "MDD:Wallpapers"
  1146. #define POINTER_DIR   "MDD:Pointers"
  1147.  
  1148. #define HELP_TICKS          70
  1149. #define HELP_AVOIDFLICKER   3
  1150. #define HELP_ACTIVE         0
  1151. #define HELP_DEVELOPER      0
  1152. #define HELP_CORR_Y         0
  1153.  
  1154. #define MENU_LINESPACING    1
  1155. #define MENU_ITEMMOVE       5
  1156. #define MENU_COMMSEQSPACING 35
  1157. #define MENU_BARCHAR        183
  1158. #define MENU_SUBSTRING      "\xbb"
  1159.  
  1160. #define TOPAZ8_FONTH        792
  1161. #define TOPAZ8_FONTV        8
  1162.  
  1163. #ifdef LOAD_ALL
  1164. #define HELP_WALLPAPERNAME "Sand1.wallpaper"
  1165. #define HELP_POINTERNAME   "Help1.pointer"
  1166. #define SLEEP_POINTERNAME  "Sleep1.pointer"
  1167. #define WORK_POINTERNAME   "Work1.pointer"
  1168. #else
  1169. #define HELP_WALLPAPERNAME NULL
  1170. #define HELP_POINTERNAME   NULL
  1171. #define SLEEP_POINTERNAME  NULL
  1172. #define WORK_POINTERNAME   NULL
  1173. #endif
  1174.  
  1175. #define USER mw=(struct MultiDesktopUser *)(SysBase->ThisTask->tc_UserData)->MultiWindows
  1176. #define WE we=(struct MultiWindowsUser *)((struct MultiDesktopUser *)(SysBase->ThisTask->tc_UserData)->MultiWindows)->ActiveWindow
  1177. #define ALLOC1(size) AllocMemory(&mw->Remember,size,MEMF_CLEAR|MEMF_PUBLIC)
  1178. #define ALLOC2(size) AllocMemory(&we->Remember,size,MEMF_CLEAR|MEMF_PUBLIC)
  1179. #define FREE1(block) FreeMemoryBlock(&mw->Remember,block)
  1180. #define FREE2(block) FreeMemoryBlock(&we->Remember,block)
  1181. #endif
  1182.  
  1183.